<?php
/**
 * Created by PhpStorm.
 * User: x
 * Date: 2018/9/25 - 2018/10/19
 * Time: 16:46
 */

namespace app\index\controller;
use think\Controller;
use think\Config;
use app\common\controller\HomeBase;
// 聊天记录表格
use app\common\model\Aimsgs as AimsgsModel;
// 用户画像数据表
use app\common\model\Aiusersinfo as AiuserInfoModel;
// 授权的微信公众号
use app\common\model\AuthorWxUser as AuthourWxUserModel;
//  话术表
use app\common\model\Aimsgrules as AimsgrulesModel;

class Msg extends HomeBase
{
    private $aimsgs_model;
    private $aiuserinfo_model;
    private $author_wx_user_model;
    private $aimsg_rule_model;
    protected function _initialize(){
        $this->aimsgs_model = new AimsgsModel();
        $this->aiuserinfo_model = new AiuserInfoModel();
        $this->author_wx_user_model = new AuthourWxUserModel();
        $this->aimsg_rule_model = new AimsgrulesModel();
    }

    public function dealmsgtest($openid='',$msg='',$appid=''){
        file_put_contents('./requestMsg.log','--3-- 灵儿回复内容appid:'.$appid."\n",FILE_APPEND);
        return '测试消息, 可以访问接收';
    }

    /*
     * wx1c3142827dc5e981  百性坊
     * ofVUb02-PcNW9gKLIqJ0jYioADAY openid
     * */
    public function dealmsg($openid='',$msg='',$appid=''){
        file_put_contents('./requestMsg.log', time().'响应海草系统消息dealmsg方法:'.$openid."\n", FILE_APPEND);
        // 1 查看用户openid是否在msg数据库已经存在了
//        dump($openid);
        $has_msg = $this->aimsgs_model->where('openid',$openid)->find();
//        dump($has_msg);
        if($has_msg){
            // 存在聊天记录  查看并发送下一条消息
//            echo ' 存在聊天记录  查看消息发送进度msgfirst =1 并发送下一条消息';
            $msg_info = $this->aimsgs_model->where('openid',$openid)->select();
            if($msg_info[0]['msgfirstan']){
//                echo '1.1.9第一条消息已经发送完成,开始第二条消息的记录';
                if($msg_info[0]['msgsecondan']){ // msgfirstan
//                    echo '2.1 第二问回答了,判断第三问';
                    if($msg_info[0]['msgagean']){ //msgsecondan
//                        echo '2.1 第三问回答了,判断第四问';
                        if($msg_info[0]['msgduringan']){ //msgsecondan
                            if($msg_info[0]['msgsick1an']){ //msgsecondan
                                if($msg_info[0]['msgsick2an']){ //msgsecondan
                                    if($msg_info[0]['msgphotosan']) { //msgsecondan
                                        //  这里暂时不回复消息
                                        return '像你这个情况，裴医生已给出诊断：主要是由于肾精肾气亏虚，加上手淫，导致阴茎海绵体细胞充血量降低，龟头神经受损敏感，出现的勃起无力，早泄，腰膝酸软的问题。你明白了吗？可以点击下方一对一咨询,添加我的个人微信号';
                                    }else{
                                        return self::msg7($openid,$msg,$appid);
                                    }
                                }else{
                                    return  self::msg6($openid,$msg,$appid);
                                }
                            }else{
                                return   self::msg5($openid,$msg,$appid);
                            }
                        }else{
                            return   self::msg4($openid,$msg,$appid);
                        }
                    }else{
                        return  self::msg3($openid,$msg,$appid);
                    }
                }else{
                    return self::msg2($openid,$msg,$appid);
                }
            }else{
                return  self::msg1($openid,$msg,$appid);
            }
        }else{
          return  self::save_hello($openid,$msg,$appid);
        }
    }

    /* ------------------------------------------------ 调用的方法 ----------------------------------
     * 0 首次聊天保存数据  openid msg 第一个开篇不记录
     * */
    private function save_hello($openid='',$msg='',$appid=''){
//        echo '不存在聊天记录, 创建msg数据, 发送第一条消息 记录用户画像 userinfo';
        $msg_data = [
            'openid'=>$openid ,
            'create_time' => time(),
            'last_time' => time(),
            'msg_time' => time()
        ];
        $msg_save = $this->aimsgs_model->save($msg_data);
//        根据appid去查询对应的聊天话术 wx1c3142827dc5e981        // 创建用户画像userinfo
        if($msg_save){
            $userinfo = $this->aiuserinfo_model->save(['openid'=>$openid]);
            return '你好，我是七乐康网络医院的客服人员,今天裴文斌医师坐诊';

        }else{
            return '抱歉，刚才网络延迟，消息没收到';
        }
    }

    // 1 聊天
    private function msg1($openid='',$msg='',$appid=''){
//        return '-- 1.1第一条消息发送未完成-- , 接收回来的消息, 保存消息';
        $first_data = [
            'last_time' => time(),
            'msgfirst' => $msg,
            'msgfirstan' => 1
        ];
//        $msg_save = $this->aimsgs_model->save($first_data);
        $update_msg = $this->aimsgs_model->where('openid',$openid)->update($first_data);
//                dump($update_msg);
//        return '判断回复是否定还是肯定的';

        $sure_answer = ['是','是的','嗯','嗯嗯','好','可以'];
        $delay_answer = ['不是','不','没有'];
        $info_data = [        ];

        if(in_array($msg,$sure_answer)){
           // 记录聊天情况,是来咨询问题的 userinfo  'isclient'
            $info_data['isclient'] = 1;
            $update_info = $this->aiuserinfo_model->where('openid',$openid)->update($info_data);
            return '好的，为了更好的帮你解决，我先了解下你的详细情况。我帮你反馈给裴医师，制定最好的治疗方案';
        }elseif(in_array($msg,$delay_answer)){
            $info_data['isclient'] = 2;
            $update_info = $this->aiuserinfo_model->where('openid',$openid)->update($info_data);
            return '这样，那如果你有任何男性方面的问题，都可以咨询我的';

        }else{
            $info_data['isclient'] = 3;
            $update_info = $this->aiuserinfo_model->where('openid',$openid)->update($info_data);
            return '不好意思哈, 我现在有点儿忙不过来, 你看看是否方便加我个人微信';
        }
    }

    private function msg2($openid='',$msg='',$appid=''){
        $first_data = [
            'openid'=>$openid ,
            'last_time' => time(),
            'msgsecond' => $msg,
            'msgsecondan' => 1
        ];
//        $msg_save = $this->aimsgs_model->save($first_data);
        $update_msg = $this->aimsgs_model->where('openid',$openid)->update($first_data);
//                dump($msg_save);
//        return '判断回复是否定还是肯定的';

        $sure_answer = ['是','是的','嗯','嗯嗯','好的','好','可以'];
        $delay_answer = ['不是','不','没有'];

        if(in_array($msg,$sure_answer)){
            return '请问您今年多少岁了?';
            // 记录聊天情况,是来咨询问题的 userinfo  is

        }elseif(in_array($msg,$delay_answer)){
            return '不方便的话就等您那边方便的时候告诉我一声哈';

        }else{
            return '不好意思哈, 我现在有点儿忙不过来, 你看看是否方便加我个人微信';
        }
    }

    /*
    更新版msg2的回复，处理更多样的回复消息和处理
    */
    private function msg2new($openid='',$msg='',$appid=''){
        $sure_answer = ['是','是的','嗯','嗯嗯','好的','好','可以'];
        $delay_answer = ['不是','不','没有'];
    }

    private function msg3($openid='',$msg='',$appid=''){
        $first_data = [
            'openid'=>$openid ,
            'last_time' => time(),
            'msgage' => $msg,
            'msgagean' => 1
        ];
//        $msg_save = $this->aimsgs_model->save($first_data);
        $update_msg = $this->aimsgs_model->where('openid',$openid)->update($first_data);
//        return '判断回复是不是数字';

        if($msg){
            return '你一个月多少次性生活，每次大概多少分钟？';
            // 记录聊天情况,是来咨询问题的 userinfo  is
        }else{
            return '不好意思哈, 我现在有点儿忙不过来, 你看看是否方便加我个人微信';
        }
    }

    private function msg4($openid='',$msg='',$appid=''){
        $first_data = [
            'openid'=>$openid ,
            'last_time' => time(),
            'msgduring' => $msg,
            'msgduringan' => 1
        ];
        $update_msg = $this->aimsgs_model->where('openid',$openid)->update($first_data);
//        return '判断回复患病时间';
        if($msg){
            return '早上晨勃情况怎么样？房事过程中硬度好不好，会不会出现中途疲软的情况？';
            // 记录聊天情况,是来咨询问题的 userinfo  is
        }else{
            return '不好意思哈, 我现在有点儿忙不过来, 你看看是否方便加我个人微信';
        }
    }
    private function msg5($openid='',$msg='',$appid=''){
        $first_data = [
            'openid'=>$openid ,
            'last_time' => time(),
            'msgsick1' => $msg,
            'msgsick1an' => 1
        ];
        $update_msg = $this->aimsgs_model->where('openid',$openid)->update($first_data);
//        return '判断回复患病时间';
        if($msg){
            return '有没有手淫的习惯呢？';
            // 记录聊天情况,是来咨询问题的 userinfo  is
        }else{
            return '不好意思哈, 我现在有点儿忙不过来, 你看看是否方便加我个人微信';
        }
    }

    // 记录肌肤情况, 并问下一个问题
    private function msg6($openid='',$msg='',$appid=''){
        $first_data = [
            'openid'=>$openid ,
            'last_time' => time(),
            'msgsick2' => $msg,
            'msgsick2an' => 1
        ];
        $update_msg = $this->aimsgs_model->where('openid',$openid)->update($first_data);
//        return '判断回复患病时间';
        if($msg){
            return '好的，那有没有出现尿频尿急，阴囊潮湿，尿分叉这些前列腺问题？';
            // 记录聊天情况,是来咨询问题的 userinfo  is
        }else{
            return '不好意思哈, 我现在有点儿忙不过来, 你看看是否方便加我个人微信';
        }
    }

    // 'msgphotos' => $msg,
    private function msg7($openid='',$msg='',$appid=''){
        $first_data = [
            'openid'=>$openid ,
            'last_time' => time(),
            'msgphotos' => $msg,
            'msgphotosan' => 1
        ];
        //  return '好了, 我这边已经了解了您的信息,方便加一下我的个人微信号,为您提供更好的服务吗？';
        $update_msg = $this->aimsgs_model->where('openid',$openid)->update($first_data);
//        return '判断回复患病时间';
        if($msg){
            return '好了, 我这边已经了解了您的信息,方便加一下我的个人微信号,为您提供更好的服务吗？';
            // 记录聊天情况,是来咨询问题的 userinfo  is
        }else{
            return '不好意思哈, 我现在有点儿忙不过来, 你看看是否方便加我个人微信';
        }
    }

    /*
     * 根据appid返回公众号类型
     * */
    private function appid2type($appid){
        $wxtype = $this->author_wx_user_model->where('appid',$appid)->select();
        return $wxtype[0]['wxtype'];
    }
    // 根据 公众号类型查找对应的话术 调试
    public function replyFromWx($wxtype){
        $map   = [];
             $map['remark'] = ['like', "%{$wxtype}%"];
//            $map = ['remark' => ['like', "%,{$wxtype},%"]];

            // 返回话术表格里面type为1的话术
            $reply_word = $this->aimsg_rule_model->where($map)->select();
//            dump($reply_word);
    }

}